package com.vhall.component.service.gift;

import com.vhall.component.entity.gift.dto.GiftListDataDTO;
import com.vhall.component.entity.gift.dto.GiftPageDTO;
import com.vhall.component.entity.gift.dto.RoomGiftDTO;
import com.vhall.component.entity.gift.vo.*;
import com.vhall.component.entity.page.vo.PageVO;

import java.util.Map;

/**
 * @author xianglei
 * @date 2021/7/13 14:02
 */
public interface GiftService {

    /**
     * 创建表情
     *
     * @param reqVo 参数
     * @return GiftRspVo
     */
    GiftRspVo create(GiftAddReqVo reqVo);

    /**
     * 删除表情
     *
     * @param reqVo 参数
     * @return 删除数量
     */
    Integer delete(GiftDelReqVo reqVo);

    /**
     * 编辑表情
     *
     * @param reqVO 参数
     * @return GiftRspVo
     */
    GiftRspVo update(GiftUpdateReqVo reqVO);

    /**
     * 表情列表
     *
     * @param reqVo 参数
     * @return Map<String, Object>
     */
    Map<String, Object> list(ListReqVo reqVo);


    /**
     * 保存表情关联关系
     *
     * @param reqVo 参数
     * @return MapSaveRspVO
     */
    MapSaveRspVO mappingSave(MapSaveReqVo reqVo);

    /**
     * 更新支付状态
     *
     * @param reqVo 参数
     * @return PayStatusSetRspVO
     */
    PayStatusSetRspVO setPayStatus(SetPayStatusReqVo reqVo);

    /**
     * 送表情
     *
     * @param reqVo 参数
     * @return GiftSendRspVo
     */
    GiftSendRspVo send(GiftSendReqVo reqVo);

    /**
     * 表情使用列表
     *
     * @param reqVo 参数
     * @return Map<String, Object>
     */
    Map<String, Object> useList(UseListReqVo reqVo);


    /**
     * 获取关联房间的表情列表
     *
     * @param vo 参数
     * @return 关联房间的表情列表
     */
    GiftPageDTO<RoomGiftDTO> roomGiftList(RoomGiftListVO vo);

    PageVO<GiftListDataDTO> watchGiftList(WatchGiftListReqVo reqVo);

    GiftListDataDTO getInfoById(Long giftId);

}
